package com.bi2.events.mobile.entities;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class Usuario implements java.io.Serializable {

	private static final long serialVersionUID = -2694585754173817073L;
	private Integer id;
	private Endereco endereco;
	private Perfil perfil;
	private String nome;
	private Date dtNasc;
	private String senha;
	private String login;
	private char sexo;
	private boolean master;
	private long credibilidade;
	private List<Usuario> amigos;
	private List<Evento> eventos;
	private List<Evento> eventosPreferidos;
	private List<Mensagem> mensagensRecebidas;
	private List<Mensagem> mensagensEnviadas;

	public Usuario() {
	}

	public Usuario(Endereco endereco, Perfil perfil, String nome, Date dtNasc,
			String senha, String login, char sexo, boolean master,
			long credibilidade) {
		this.endereco = endereco;
		this.perfil = perfil;
		this.nome = nome;
		this.dtNasc = dtNasc;
		this.senha = senha;
		this.login = login;
		this.sexo = sexo;
		this.master = master;
		this.credibilidade = credibilidade;
	}

	public Usuario(Endereco endereco, Perfil perfil, String nome, Date dtNasc,
			String senha, String login, char sexo, boolean master,
			long credibilidade, List<Usuario> amigos, List<Evento> eventos,
			List<Evento> eventosPreferidos, List<Mensagem> mensagensRecebidas,
			List<Mensagem> mensagensEnviadas) {
		this.endereco = endereco;
		this.perfil = perfil;
		this.nome = nome;
		this.dtNasc = dtNasc;
		this.senha = senha;
		this.login = login;
		this.sexo = sexo;
		this.master = master;
		this.credibilidade = credibilidade;
		this.amigos = amigos;
		this.eventos = eventos;
		this.eventosPreferidos = eventosPreferidos;
		this.mensagensRecebidas = mensagensRecebidas;
		this.mensagensEnviadas = mensagensEnviadas;
	}

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Endereco getEndereco() {
		return this.endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public Perfil getPerfil() {
		return this.perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDtNasc() {
		return this.dtNasc;
	}

	public void setDtNasc(Date dtNasc) {
		this.dtNasc = dtNasc;
	}

	public String getSenha() {
		return this.senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getLogin() {
		return this.login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public char getSexo() {
		return this.sexo;
	}

	public void setSexo(char sexo) {
		this.sexo = sexo;
	}

	public boolean isMaster() {
		return this.master;
	}

	public void setMaster(boolean master) {
		this.master = master;
	}

	public long getCredibilidade() {
		return this.credibilidade;
	}

	public void setCredibilidade(long credibilidade) {
		this.credibilidade = credibilidade;
	}

	public List<Usuario> getAmigos() {
		return amigos;
	}

	public void setAmigos(List<Usuario> amigos) {
		this.amigos = amigos;
	}

	public List<Evento> getEventos() {
		return eventos;
	}

	public void setEventos(List<Evento> eventos) {
		this.eventos = eventos;
	}

	public List<Evento> getEventosPreferidos() {
		return eventosPreferidos;
	}

	public void setEventosPreferidos(List<Evento> eventosPreferidos) {
		this.eventosPreferidos = eventosPreferidos;
	}

	public List<Mensagem> getMensagensRecebidas() {
		return mensagensRecebidas;
	}

	public void setMensagensRecebidas(List<Mensagem> mensagensRecebidas) {
		this.mensagensRecebidas = mensagensRecebidas;
	}

	public List<Mensagem> getMensagensEnviadas() {
		return mensagensEnviadas;
	}

	public void setMensagensEnviadas(List<Mensagem> mensagensEnviadas) {
		this.mensagensEnviadas = mensagensEnviadas;
	}

	public int getIdade() {
		Calendar ds = Calendar.getInstance();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
		SimpleDateFormat sd = new SimpleDateFormat("MM");
		SimpleDateFormat sdd = new SimpleDateFormat("dd");
		String anoAtual = sdf.format(ds.getTime());
		String anoNasc = sdf.format(getDtNasc());
		String diaAtual = sdd.format(ds.getTime());
		String diaNasc = sdd.format(getDtNasc());
		String mesAtual = sd.format(ds.getTime());
		String mesNasc = sd.format(getDtNasc());
		int diaAt = Integer.parseInt(diaAtual);
		int diaNasc2 = Integer.parseInt(diaNasc);
		int mesAt = Integer.parseInt(mesAtual);
		int mesNas = Integer.parseInt(mesNasc);
		int dataHoje = Integer.parseInt(anoAtual);
		int dataNasc = Integer.parseInt(anoNasc);

		if (mesAt > mesNas) {
			return (dataHoje - dataNasc);
		} else if (mesAt < mesNas) {
			return (dataHoje - dataNasc) - 1;
		} else if (mesAt == mesNas) {
			if (diaAt > diaNasc2) {
				return (dataHoje - dataNasc) - 1;
			} else
				return (dataHoje - dataNasc);
		} else {
			return 0;
		}
	}

    @Override
    public String toString() {
        return "id:" + id + ", endereco:" + endereco + ", perfil:" + perfil + ", nome:"
                + nome + ", dtNasc:" + dtNasc + ", senha:" + senha + ", login:" + login + ", sexo:"
                + sexo + ", master:" + master + ", credibilidade:" + credibilidade + ", amigos:"
                + amigos + ", eventos:" + eventos + ", eventosPreferidos=" + eventosPreferidos
                + ", mensagensRecebidas:" + mensagensRecebidas + ", mensagensEnviadas:"
                + mensagensEnviadas + "";
    }

}